#pragma once
#include <string>
#include <fstream>

namespace kzz
{
    class Util
    {
    public:
        // 实现读取到分隔符的功能
        static bool ReadOneLine(std::string &bigstr, std::string &out, const std::string &sep)
        {
            auto pos = bigstr.find(sep);
            if (pos == std::string::npos)
                return false;

            out = bigstr.substr(0, pos);

            bigstr.erase(0, pos);
            return true;
        }

        static bool ReadFileContent(std::string &filename, std::string &text)
        {
            // std::fstream in(filename);
            // if (!in.is_open())
            // {
            //     return false;
            // }

            // std::string line;
            // while (std::getline(in, line))
            // {
            //     _text += line;
            // }

            // in.close();



             // version2 : 以二进制方式进行读取
        int filesize = FileSize(filename);
        if(filesize > 0)
        {
            std::ifstream in(filename);
            if(!in.is_open())
                return false;
            (&text)->resize(filesize);
            in.read((char*)((&text)->c_str()), filesize);
            in.close();
        }
        else
        {
            return false;
        }

            return true;
        }
        static int FileSize(const std::string &filename)
        {
            std::ifstream file(filename, std::ios::binary | std::ios::ate);
            if (!file.is_open())
            {
                return -1; // 返回 -1 表示错误
            }
            return file.tellg();
        }
    };
}